#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N=2e5+10;
int h[N];
int e[N],ne[N],idx;
int a[N];
int sum[N];
int len[N];
void add(int a,int b)
{
	e[idx]=b;
	ne[idx]=h[a];
	h[a]=idx;
    idx++;
}
void rec(int b)
{
	for(int i=h[b];i!=-1;i=ne[i])
	{
		int eb=e[i];
		if(a[eb]==0)
		{
			rec(eb);
			a[eb]=1;
		}
	    sum[b]=max(sum[b],sum[eb]);
	}
	sum[b]+=len[b];
}
void solve(int t)
{
	for(int i=1;i<=t;i++)
	{
		if(h[i]==-1)
		{
			a[i]=1;
			sum[i]=len[i];
		}
	}
	for(int i=1;i<=t;i++)
	{
		if(a[i]==0)
		{
		    for(int j=h[i];j!=-1;j=ne[j])
		    {
		    	int b=e[j];
		    	if(a[b]==0)
		    	{
		    		rec(b);
		    		a[b]=1;
				}
				sum[i]=max(sum[b],sum[i]);
			}
			sum[i]+=len[i];
			a[i]=1;
		}
	}
	int ans=0;
	for(int i=1;i<=t;i++)
	{
		ans=max(sum[i],ans);
	}
	cout<<ans;
}
int main()
{
	memset(h,-1,sizeof(h));
	int t;
	cin>>t;
	int t1=t;
	while(t--)
	{
		int n;
		int i=0;
		int num=0;
		cin>>n;
		while(n!=0)
		{
			if(i==0)
			{
				num=n;
			}
			else if(i==1)
			{
				len[num]=n;
			}
			else
			{
				add(num,n);
			}
			i++;
			cin>>n;
		}
	}
	solve(t1);
	return 0;
}
